const MAX_LIMIT = 10

Page({
  data: {
    navState: 0, //导航状态
    tags: [{
      value: ""
    }],
    notifies: [{
      value: ""
    }],
    list: [],
    noData: false
  },

  //点击导航
  navSwitch: function (e) {
    // console.log(e.currentTarget.dataset.index)
    let index = e.currentTarget.dataset.index;

    if (index == 0) {
      this.initTags()
    } else if (index == 1) {
      this.initNotifies();
    } else {
      this._loadData()
    }
    this.setData({
      navState: index
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.initTags();
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.setData({
      list: []
    })
    this._loadData()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    if(!this.data.noData){
      this._loadData()
    }
  },

  /**
   * 更改标签（页面一）：初始化标签
   */
  initTags: function () {
    let _this = this
    wx.cloud.callFunction({
      name: "tags",
      data: {
        $url: 'getTags'
      }
    }).then(res => {
      if (res.result.code === 200) {
        _this.setData({
          tags: res.result.data[0].lists
        })
      }
    })
  },

  /**
   * 更改标签（页面一）：增加输入框
   */
  onAddTag: function () {
    let tags = this.data.tags;
    let newData = {
      value: ''
    };
    tags.push(newData);
    this.setData({
      tags
    })
  },

  /**
   * 更改标签（页面一）：删除输入框
   */
  delTag: function () {
    let tags = this.data.tags;
    if (tags.length <= 1) {
      wx.showToast({
        icon: 'none',
        title: '不能删除默认输入框',
      })
      return;
    }
    tags.pop();
    this.setData({
      tags: tags,
    })
  },

  /**
   * 更改标签（页面一）：动态绑定输入值
   */
  bindTagInput: function (e) {
    let index = e.currentTarget.dataset.index
    let tags = this.data.tags;
    tags[index].value = e.detail.value;
    this.setData({
      tags
    })
  },

  /**
   * 更改标签（页面一）：确认修改
   */
  async saveTags() {
    const tags = this.data.tags;
    wx.cloud.callFunction({
      name: "tags",
      data: {
        $url: 'updateTags',
        lists: tags
      }
    }).then(res => {
      if (res.result.code === 200) {
        wx.showToast({
          title: '保存成功',
        })
      } else {
        wx.showToast({
          title: '保存失败',
          icon: 'none'
        })
      }
    })
  },

  /**
   * 更改通知（页面二）：初始化通知
   */
  initNotifies: function () {
    let _this = this
    wx.cloud.callFunction({
      name: "notify",
      data: {
        $url: 'getNotifies'
      }
    }).then(res => {
      if (res.result.code === 200) {
        _this.setData({
          notifies: res.result.data[0].lists
        })
      }
    })
  },

  /**
   * 更改通知（页面二）：增加输入框
   */
  onAddNotify: function () {
    let notifies = this.data.notifies;
    let newData = {
      value: ''
    };
    notifies.push(newData);
    this.setData({
      notifies
    })
  },

  /**
   * 更改通知（页面二）：删除输入框
   */
  delNotify: function () {
    let notifies = this.data.notifies;
    if (notifies.length <= 1) {
      wx.showToast({
        icon: 'none',
        title: '不能删除默认输入框',
      })
      return;
    }
    notifies.pop();
    this.setData({
      notifies,
    })
  },

  /**
   * 更改通知（页面二）：动态绑定输入值
   */
  bindNotifyInput: function (e) {
    let index = e.currentTarget.dataset.index
    let notifies = this.data.notifies;
    notifies[index].value = e.detail.value;
    this.setData({
      notifies
    })
  },

  /**
   * 更改通知（页面二）：确认修改
   */
  async saveNotify() {
    const notifies = this.data.notifies;
    wx.cloud.callFunction({
      name: "notify",
      data: {
        $url: 'updateNotifies',
        lists: notifies
      }
    }).then(res => {
      if (res.result.code === 200) {
        wx.showToast({
          title: '保存成功',
        })
      } else {
        wx.showToast({
          title: '保存失败',
          icon: 'none'
        })
      }
    })
  },

  /**
   * 更改通知（页面三）：获取数据
   */
  async _loadData() {
    wx.showLoading({
      title: '加载中',
    })
    const db = wx.cloud.database()
    let res = null
    try {
      res = await db.collection('list').where({
          is_delete: false
        })
        .skip(this.data.list.length)
        .limit(MAX_LIMIT)
        .orderBy('publishDate', 'desc')
        .get()
    } catch (err) {
      console.log(err)
    }

    for (let o in res.data) {
      res.data[o].date = (new Date(res.data[o].date)).getTime()
    }
    this.setData({
      list: [...this.data.list, ...res.data],
      noData: res.data.length < MAX_LIMIT
    })
    wx.stopPullDownRefresh()
    wx.hideLoading()
  },


})